﻿#region Using Directives

using System;

#endregion Using Directives

namespace SharePointStu.CAMLHelper.CAML
{
    /// <summary>
    /// Class that exposes enumerations of values used by the <see cref="T:SharePointStu.CAMLHelper.CAML.CAMLManager"/> object.
    /// </summary>
    public class Types
    {
        #region Constructor

        /// <summary>
        /// Private constructor.
        /// </summary>
        private Types()
        {
        }

        #endregion Constructor

        #region Public Enumerators

        /// <summary>
        /// Available field types.
        /// </summary>
        public enum FieldTypes
        {
            /// <summary>
            /// Text field.
            /// </summary>
            Text,
            /// <summary>
            /// Numeric field.
            /// </summary>
            Number,
            /// <summary>
            /// YesNo field.
            /// </summary>
            YesNo,
            /// <summary>
            /// Computed field.
            /// </summary>
            Computed,
            /// <summary>
            /// User field.
            /// </summary>
            User,
            /// <summary>
            /// DateTime field.
            /// </summary>
            DateTime,
            /// <summary>
            /// Counter field.
            /// </summary>
            Counter,
            /// <summary>
            /// Attachment field.
            /// </summary>
            Attachments,
            /// <summary>
            /// Lookup field.
            /// </summary>
            Lookup,
            /// <summary>
            /// File field.
            /// </summary>
            File
        }

        /// <summary>
        /// Available query types.
        /// </summary>
        public enum QueryTypes
        {
            /// <summary>
            /// Equals.
            /// </summary>
            Eq,
            /// <summary>
            /// Does not equal.
            /// </summary>
            Neq,
            /// <summary>
            /// Greater than.
            /// </summary>
            Gt,
            /// <summary>
            /// Greater than or equal to.
            /// </summary>
            Geq,
            /// <summary>
            /// Less than.
            /// </summary>
            Lt,
            /// <summary>
            /// Less than or equal to.
            /// </summary>
            Leq,
            /// <summary>
            /// Begins with.
            /// </summary>
            BeginsWith,
            /// <summary>
            /// Contains.
            /// </summary>
            Contains,
            /// <summary>
            /// Date ranges overlap.
            /// </summary>
            DateRangesOverlap,
            /// <summary>
            /// Is null.
            /// </summary>
            IsNull,
            /// <summary>
            /// Is not null.
            /// </summary>
            IsNotNull
        }

        /// <summary>
        /// Available join types.
        /// </summary>
        public enum JoinTypes
        {
            /// <summary>
            /// And.
            /// </summary>
            And,
            /// <summary>
            /// Or.
            /// </summary>
            Or
        }

        /// <summary>
        /// Available field reference types.
        /// </summary>
        public enum FieldRefTypes
        {
            /// <summary>
            /// Use the name of the field as the reference type.
            /// </summary>
            Name,
            /// <summary>
            /// Use the identifier of the field as the reference type.
            /// </summary>
            ID
        }

        #endregion Public Enumerators
    }
}
